	package ec.edu.ucacue.siop.modelo.recurso;

import java.io.Serializable;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import ec.edu.ucacue.siop.modelo.dinamica.producto.ModeloProducto;
import ec.edu.ucacue.siop.modelo.dinamica.unidad.Comportamiento;
import ec.edu.ucacue.siop.modelo.recurso.equipo.EquipoAsignacion;
import ec.edu.ucacue.siop.modelo.recurso.talentoHumano.PersonalOperarioAsignacion;
/**
 * 
 * @author edgar
 *
 */
@Entity
@Table(name="unidad_funcional")
public class UnidadFuncional implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 6190950774176738880L;
	private long id;
	private String nombre;
	private String nombre2;
	private String descripcion;
	private String nombreNivel;
	private int nivel;
	private List<UnidadFuncional> listaUnidadHija;
	private UnidadFuncional unidadPadre;
	private List<PersonalOperarioAsignacion> listaPersonal;
	private List<RequerimientoEquipo> listaReqEquipo;
	private List<RequerimientoRH> listaReqRH;
	private List<EquipoAsignacion> listaAsignacion;
	private List<CompetenciaDisponibleUF> listaCompetencia;
	private List<MaterialDefUso> listaProductosEntrada;
	private List<MaterialDefProd> listaProductosSalida;
	private List<EnergiaUso> listaEnergia;
	private List<VariableAlimentacion> listaVariableAlimentacion;
	private List<VariableCalidad> listaVarCalidad;
	private List<VariableProceso> listaVarProceso;
	private List<VariableEvento> listaVarEvento;
	private List<Comportamiento> listaComportamiento;
	private List<DocumentoUsado> listaDocumento;
	private List<ModeloProducto> listaModeloProducto;
	
	@Id
	@GeneratedValue
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	@Column(length=32)
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	@Column(length=64)
	public String getDescripcion() {
		return descripcion;
	}
	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}
	@Column(length=32)
	public String getNombre2() {
		return nombre2;
	}
	public void setNombre2(String nombre2) {
		this.nombre2 = nombre2;
	}
	@OneToMany(mappedBy="unidad", cascade=CascadeType.ALL)
	public List<MaterialDefUso> getListaProductosEntrada() {
		return listaProductosEntrada;
	}
	public void setListaProductosEntrada(List<MaterialDefUso> listaProductosEntrada) {
		this.listaProductosEntrada = listaProductosEntrada;
	}
	@OneToMany(mappedBy="unidad", cascade=CascadeType.ALL)
	public List<EnergiaUso> getListaEnergia() {
		return listaEnergia;
	}
	public void setListaEnergia(List<EnergiaUso> listaEnergia) {
		this.listaEnergia = listaEnergia;
	}
	@OneToMany(mappedBy="unidad", cascade=CascadeType.ALL)
	public List<MaterialDefProd> getListaProductosSalida() {
		return listaProductosSalida;
	}
	public void setListaProductosSalida(List<MaterialDefProd> listaProductosSalida) {
		this.listaProductosSalida = listaProductosSalida;
	}
	@OneToMany(mappedBy="unidadFuncional",  cascade=CascadeType.ALL )
	public List<VariableCalidad> getListaVarCalidad() {
		return listaVarCalidad;
	}
	public void setListaVarCalidad(List<VariableCalidad> listaVarCalidad) {
		this.listaVarCalidad = listaVarCalidad;
	}
	@Column(length=32)
	public String getNombreNivel() {
		return nombreNivel;
	}
	public void setNombreNivel(String nombreNivel) {
		this.nombreNivel = nombreNivel;
	}
	public int getNivel() {
		return nivel;
	}
	public void setNivel(int nivel) {
		this.nivel = nivel;
	}
	@OneToMany(mappedBy="unidadPadre", cascade=CascadeType.ALL)
	public List<UnidadFuncional> getListaUnidadHija() {
		return listaUnidadHija;
	}
	public void setListaUnidadHija(List<UnidadFuncional> listaUnidadHija) {
		this.listaUnidadHija = listaUnidadHija;
	}
	@ManyToOne
	public UnidadFuncional getUnidadPadre() {
		return unidadPadre;
	}
	public void setUnidadPadre(UnidadFuncional unidadPadre) {
		this.unidadPadre = unidadPadre;
	}
	@OneToMany(mappedBy="unidad", cascade=CascadeType.ALL)
	public List<PersonalOperarioAsignacion> getListaPersonal() {
		return listaPersonal;
	}
	public void setListaPersonal(List<PersonalOperarioAsignacion> listaPersonal) {
		this.listaPersonal = listaPersonal;
	}
	@OneToMany(mappedBy="unidad", cascade=CascadeType.ALL)
	public List<RequerimientoEquipo> getListaReqEquipo() {
		return listaReqEquipo;
	}
	public void setListaReqEquipo(List<RequerimientoEquipo> listaReqEquipo) {
		this.listaReqEquipo = listaReqEquipo;
	}
	@OneToMany(mappedBy="unidad", cascade=CascadeType.ALL)
	public List<RequerimientoRH> getListaReqRH() {
		return listaReqRH;
	}
	public void setListaReqRH(List<RequerimientoRH> listaReqRH) {
		this.listaReqRH = listaReqRH;
	}
	@OneToMany(mappedBy="unidad", cascade=CascadeType.ALL)
	public List<CompetenciaDisponibleUF> getListaCompetencia() {
		return listaCompetencia;
	}
	public void setListaCompetencia(List<CompetenciaDisponibleUF> listaCompetencia) {
		this.listaCompetencia = listaCompetencia;
	}
	@OneToMany(mappedBy="unidad", cascade=CascadeType.ALL)
	public List<EquipoAsignacion> getListaAsignacion() {
		return listaAsignacion;
	}
	public void setListaAsignacion(List<EquipoAsignacion> listaAsignacion) {
		this.listaAsignacion = listaAsignacion;
	}
	@OneToMany(mappedBy="unidad", cascade=CascadeType.ALL)
	public List<Comportamiento> getListaComportamiento() {
		return listaComportamiento;
	}
	public void setListaComportamiento(List<Comportamiento> listaComportamiento) {
		this.listaComportamiento = listaComportamiento;
	}
	@OneToMany(mappedBy="unidad", cascade=CascadeType.ALL)
	public List<DocumentoUsado> getListaDocumento() {
		return listaDocumento;
	}
	public void setListaDocumento(List<DocumentoUsado> listaDocumento) {
		this.listaDocumento = listaDocumento;
	}
	@OneToMany(mappedBy="unidad", cascade=CascadeType.ALL)
	public List<ModeloProducto> getListaModeloProducto() {
		return listaModeloProducto;
	}
	public void setListaModeloProducto(List<ModeloProducto> listaModeloProducto) {
		this.listaModeloProducto = listaModeloProducto;
	}
	@OneToMany(mappedBy="unidadFuncional",  cascade=CascadeType.ALL )
	public List<VariableProceso> getListaVarProceso() {
		return listaVarProceso;
	}
	public void setListaVarProceso(List<VariableProceso> listaVarProceso) {
		this.listaVarProceso = listaVarProceso;
	}
	@OneToMany(mappedBy="unidadFuncional",  cascade=CascadeType.ALL )
	public List<VariableEvento> getListaVarEvento() {
		return listaVarEvento;
	}
	public void setListaVarEvento(List<VariableEvento> listaVarEvento) {
		this.listaVarEvento = listaVarEvento;
	}
	@OneToMany(mappedBy="unidadFuncional", cascade=CascadeType.ALL)
	public List<VariableAlimentacion> getListaVariableAlimentacion() {
		return listaVariableAlimentacion;
	}
	public void setListaVariableAlimentacion(
			List<VariableAlimentacion> listaVariableAlimentacion) {
		this.listaVariableAlimentacion = listaVariableAlimentacion;
	}
}

